using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using 凌依.工具库;

public class 贴图处理 : MonoBehaviour
{
    public string 保存地址;
    public List<string> 文件夹 = new List<string>();

    IEnumerator 携程()
    {
        yield return 0;
        IO操作.文件夹_创建(保存地址);

        void 处理单张图片(string path, string savePath)
        {
            Texture2D texture = new Texture2D(10, 10);
            texture.LoadImage(IO操作.文件_读取字节(path));

            Dictionary<Color, int> 取样 = new Dictionary<Color, int>();
            for (int x = 0; x < texture.width; x += 20)
            {
                for (int y = 0; y < texture.height; y += 20)
                {
                    Color th = texture.GetPixel(x, y);
                    if (取样.ContainsKey(th))
                        取样[th]++;
                    else
                        取样.Add(th, 1);
                }
            }

            Color 采样点 = new Color(0, 0, 0, 0.016f);
            int 采样到最高数量 = 0;

            foreach (var item in 取样)
            {
                if (item.Value > 采样到最高数量)
                {
                    采样到最高数量 = item.Value;
                    采样点 = item.Key;
                }
            }


            for (int x = 0; x < texture.width; x++)
            {
                for (int y = 0; y < texture.height; y++)
                {
                    Color 当前像素 = texture.GetPixel(x, y);
                    if (当前像素 == 采样点)
                        texture.SetPixel(x, y, new Color(0, 0, 0, 0));
                }
            }
            texture.Apply();
            byte[] png = texture.EncodeToPNG();
            IO操作.文件_覆盖写入(savePath, png);
            Debug.Log(path + "处理完成");
        }

        foreach (var path in 文件夹)
        {
            string[] vs = path.Split('\\');
            string name = vs[vs.Length - 1];
            string newpath = 保存地址 + "\\" + name;
            IO操作.文件夹_创建(newpath);

            List<string> Png文件夹 = IO函数.文件夹_ALL子集文件夹(path);

            List<string> 处理文件夹路径 = new List<string>();
            Dictionary<string, string> ab = new Dictionary<string, string>();
            foreach (var item in Png文件夹)
            {
                ab.Add(item,保存地址 + item.Replace(path, ""));
            }

            foreach (var item in ab)
            {
                List<string> pngs = IO函数.文件夹_子集(item.Key, IO函数.文件返回类型.文件地址);
                IO操作.文件夹_创建(item.Value);
                foreach (var pngPath in pngs)
                {
                    if (IO函数.文件格式(pngPath) != ".png")
                        continue;
                    yield return 0;
                    处理单张图片(pngPath, item.Value + "\\" + IO函数.文件名(pngPath));
                }
                

            }
        }
    }

    //有些贴图背景透明度发黑,需要处理
    [ContextMenu("贴图处理")]
    private void 测试()
    {
        StartCoroutine(携程());
    }


    public Color A;
    public Color B;
    public SpriteRenderer 渲染器;
    [ContextMenu("渲染")]
    private void 渲染()
    {
        //4D4D4D
        渲染器.color = A + B;
    }
}
